0 REM********************************** 1 REM 2 REM C64 4040 DISK COMMANDS 3 REM IEEE INTERFACE IS REQUIRED 4 REM 5 REM DAVID BYRUM 6 REM 3301 E. FT. LOWELL RD 7 REM TUCSON, AZ 85716 / 795-2928 8 REM 9 REM********************************** 100 POKE 53280,4:POKE 53281,6:POKE 788,52:PRINT CHR$(14):GOSUB10000 110 PRINT"[147][144]********** [129]4040 DISK COMMANDS[144] **********" 120 PRINTTAB(5)"[144][198] 1 [158]= [196]UPLICATE [196]ISK ([196]1 = [196]0)" 125 PRINTTAB(5)"[144][198] 2 [158]= [195]OPY A FILE FROM [196]0 TO [196]1" 130 PRINTTAB(5)"[144][198] 3 [158]= [201]NITIALIZE A [196]RIVE" 135 PRINTTAB(5)"[144][198] 4 [158]= [214]ALIDATE A [196]ISK" 140 PRINTTAB(5)"[144][198] 5 [158]= [196]ISK [196]IRECTORY" 145 PRINTTAB(5)"[144][198] 6 [158]= [198]ORMATE [196]ISK IN [196]RIVE 1" 150 PRINTTAB(5)"[144][198] 7 [158]= [196]ETERMINE [196]ISK [197]RROR" 155 PRINTTAB(5)"[144][198] 8 [158]= [210]ENAME A FILE" 170 PRINT"[144][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185]" 200 GETZ$:IF Z$="" THEN 200 210 IF Z$="[133]" THEN GOSUB 1000 :REM F1 - DUPLICATE DISK (D1=D0) 215 IF Z$="[137]" THEN GOSUB 1500 :REM F2 - COPY A FILE FROM D0 TO D1 220 IF Z$="[134]" THEN GOSUB 2500 :REM F3 - INITIALIZE DRIVE 0 225 IF Z$="[138]" THEN GOSUB 2000 :REM F4 - VALIDATE D1 DISK 230 IF Z$="[135]" THEN GOSUB 3000 :REM F5 - DISK (null) 235 IF Z$="[139]" THEN GOSUB 3500 :REM F6 - FORMATE NEW D1 DISK 240 IF Z$="[136]" THEN GOSUB 4000 :REM F7 - DETERMINE DISK ERROR 250 IF Z$="[140]" THEN GOSUB 4500 :REM F8 - RENAME A FILE 260 IF Z$="" THEN GOSUB 5000 :REM CONTROL S - SCRATCH A PROGRAM 270 IF Z$="" THEN 9000 :REM CONTROL Q - QUIT PROGRAM 290 GOTO 110 1000 REM ----- BACKUP D0 TO D1 -------- 1010 POKE 214,23:PRINT"[145][129] [196]UPLICATING [196]ISK IN [144][196]RIVE 0[144] [129]TO [144][196]RIVE 1" 1020 OPEN 15,8,15 1030 PRINT#15,"D1=0":GOSUB 4020 1040 CLOSE 15 1050 RETURN 1500 REM ------- COPY A FILE ---------- 1510 POKE 214,23:INPUT"[145][129][208]ROGRAM TO BE COPIED [154]";PG$ 1515 PRINT"[145] " 1520 PRINT"[145][129] [195][207][208][217][201][206][199][160][155]";PG$;"[129] TO [196]1" 1530 OPEN 15,8,15 1540 PRINT#15,"C1:"+PG$+"=0:"+PG$:GOSUB 4020 1550 CLOSE 15 1560 RETURN 2000 REM -------- VALIDATE ------------ 2005 POKE 214,23:INPUT"[145][129][213]SING [196][210][201][214][197] [144]0[129] OR [144]11[157][157][157][159]";DR$ 2010 PRINT"[145] [129][214]ALIDATING [196]ISK IN [144][196]RIVE ";DR$ 2020 OPEN 15,8,15 2030 PRINT#15,"V"+DR$:GOSUB 4020 2040 CLOSE 15 2050 RETURN 2500 REM ------- INITIALIZE------------ 2505 POKE 214,23:INPUT"[145][129][213]SING [196][210][201][214][197] [144]0[129] OR [144]10[157][157][157][159]";DR$ 2510 PRINT"[145] [129][201]NITIALIZING [144][196]RIVE "DR$ 2520 OPEN 15,8,15 2530 PRINT#15,"I"+DR$:GOSUB 4020 2540 CLOSE 15 2550 RETURN 3000 REM ------- DIRECTORY ------------ 3010 POKE 214,23:INPUT"[145][129][213]SING [196][210][201][214][197] [144]0[129] OR [144]11[157][157][157][159]";DR 3020 PRINT"[145] " 3030 IF DR<>0 AND DR<>1 THEN3010 3040 IF DR=0 THEN POKE 839,48:SYS 828:IF E>19 THEN3080 3050 IF DR=1 THEN POKE 839,49:SYS 828:IF E>19 THEN3080 3060 PRINTTAB(6)"[144][208]RESS [210]ETURN[144] FOR MENU" 3070 GETZ$:IF Z$<>CHR$(13) THEN3070 3080 RETURN 3500 REM ------- NEW HEADER ----------- 3510 DH$="":POKE 214,23:INPUT"[145][129][196]ISK [200][197][193][196][197][210] [144]";DH$:DH$=LEFT$(DH$,16) 3520 PRINT"[145] " 3530 IF DH$="" THEN DH$="NEW DISK" 3540 POKE 214,23:PRINTTAB(9)"[145][129] [198][207][210][205][193][212][201][206][199] [193] [206][197][215][160][196][201][211][203]" 3550 OPEN 15,8,15 3560 ID=INT(RND(TI)*100):ID$=STR$(ID) 3570 PRINT#15,"N1:"+DH$+","+ID$:GOSUB4020 3580 CLOSE 15 3590 RETURN 4000 REM ------- DISK ERROR ----------- 4010 OPEN 15,8,15 4020 INPUT#15,E,E$ 4025 IF Z$="[136]" THEN 4040 4030 IF E<20 THEN 4080 4040 POKE 214,23:PRINT"[145] " 4050 PRINT"[145] [196]ISK ERROR [129]";E;"[144]- [129]";E$ 4060 PRINTTAB(6)"[144][208]RESS [152][210]ETURN[144] TO CONTINUE[145]" 4070 GETZ$:IF Z$<>CHR$(13) THEN4070 4080 CLOSE 15:RETURN 4500 REM ----- RENAME A FILE ---------- 4510 POKE 214,23:INPUT"[145][129][213]SING [196][210][201][214][197] [144]0[129] OR [144]11[157][157][157][159]";DR$ 4520 PRINT"[145] " 4530 IF DR$<>"0" AND DR$<>"1" THEN4510 4540 INPUT"[145][129][207]LD [198]ILE [206]AME [159]";OF$ 4550 INPUT"[129][206]EW [198]ILE [206]AME [144]";NF$ 4560 PRINT"[145][145] " 4570 PRINT" " 4580 POKE 214,23:PRINT"[145][129][210]ENAMING [159]";OF$;"[129] TO [144]";NF$ 4590 OPEN 15,8,15 4600 PRINT#15,"R"+DR$+":"+NF$+"="+OF$:GOSUB4020 4610 CLOSE 15 4620 RETURN 5000 REM ----- SCRATCH A FILE --------- 5010 POKE 214,23:INPUT"[145][129][213]SING [196][210][201][214][197] [144]0[129] OR [144]11[157][157][157][159]";DR$ 5020 PRINT"[145] " 5030 IF DR$<>"0" AND DR$<>"1" THEN4510 5040 INPUT"[145][129][211]CRATCH [198]ILE [159]";SF$ 5060 PRINT"[145] " 5080 POKE 214,23:PRINT"[145][129][211]CRATCHING [159]";SF$ 5090 OPEN 15,8,15 5100 PRINT#15,"S"+DR$+":"+SF$:GOSUB4020 5110 CLOSE 15 5120 RETURN 9000 REM ------ QUIT PROGRAM ---------- 9010 CLOSE 15 9020 POKE 214,23:PRINTTAB(6)"[145][197]ND OF [208]ROGRAM.... [129][199]OODBYE.[144][145][145]":POKE 788,49:END 10000 REM----- M.L. DIRECTORY --------- 10010 PRINT"[147]";TAB(7)"[129][197]NABLING [159][201]NVISIBLE [196]IRECTORY[154]" 10020 FOR I = 828 TO 971:READ A:POKE I,A:T=T+A:NEXT 10030 IF T<>19610 THEN PRINT"ERROR IN DATA STATEMENTS[146][154]":END 10040 IF PEEK(65440)=135 THEN POKE 924,189:REM USE ,221 ON VIC 10045 RETURN 10050 DATA 169,1,32,195,255,169,36 10060 DATA 141,240,3,169,48,141,241 10070 DATA 3,169,1,162,8,160,0 10080 DATA 32,186,255,169,2,162,240 10090 DATA 160,3,32,189,255,32,192 10100 DATA 255,169,64,32,144,255,162 10110 DATA 1,32,198,255,32,144,255 10120 DATA 32,207,255,32,207,255,32 10130 DATA 207,255,32,207,255,201,0 10140 DATA 240,58,32,204,255,32,228 10150 DATA 255,201,32,208,3,32,196 10160 DATA 3,162,1,32,198,255,32 10170 DATA 207,255,168,32,207,255,72 10180 DATA 152,170,104,32,205,221,169 10190 DATA 32,32,210,255,32,207,255 10200 DATA 201,0,208,8,169,13,32 10210 DATA 210,255,76,115,3,32,210 10220 DATA 255,76,162,3,169,1,32 10230 DATA 195,255,32,204,255,169,204 10240 DATA 133,178,96,32,228,255,201 10250 DATA 32,208,249,96